package models

import (
	_ "github.com/go-sql-driver/mysql"
	"time"
)

type BaseHeaderModel struct {
	Id uint `orm:"primary_key;description:(自增id)"` //自增id
}
type BaseFooterModel struct {
	Lng       string    `orm:"varchar(20);description(经度)" json:"Lng"`                        //经度
	Lat       string    `orm:"varchar(20);description(纬度)" json:"Lat"`                        //纬度
	Sort      int64     `orm:"int(10);DEFAULT(0);description(排序)" json:"Sort"`                //排序
	Memo      string    `orm:"varchar(250);description(备注)" json:"Memo"`                      //备注
	DataState int       `orm:"int(10);DEFAULT(1);description(状态)" json:"DataState"`           //状态
	CreateAt  time.Time `orm:"auto_now_add;type(datetime);description(创建时间)" json:"CreateAt"` //创建时间
	UpdateAt  time.Time `orm:"auto_now;type(datetime);description(修改时间)" json:"UpdateAt"`     //修改时间
}

/* 省份信息 table_name = Province */ //省份信息是需要我们手动添加到数据库中的
type Province struct {
	BaseHeaderModel
	ProvinceName string `orm:"varchar(40);description(省份名称)" json:"ProvinceName"`        //省份名称
	ProvinceCode int64  `orm:"int(10);DEFAULT(0);description(省份代码)" json:"ProvinceCode"` //省份代码
	ShortName    string `orm:"varchar(40);description(简称)" json:"ShortName"`             //简称
	BaseFooterModel
}

// 创建索引
func (province *Province) TableIndex() [][]string {
	return [][]string{
		// 给 name 创建索引，并给 telephone 和 email 创建联合索引
		{"province_code"},
		//{"telephone", "email"},
	}
}

/* 城市信息 table_name = CITY */ //城市信息是需要我们手动添加到数据库中的
type City struct {
	BaseHeaderModel
	ProvinceCode int64  `orm:"int(10);DEFAULT(0);description(省代码)" json:"ProvinceCode"` //省代码
	CityName     string `orm:"varchar(40);description(市名称)" json:"AreaName"`            //市名称
	CityCode     int64  `orm:"int(10);DEFAULT(0);description(市代码)" json:"CityCode"`     //市代码
	ShortName    string `orm:"varchar(40);description(简称)" json:"ShortName"`            //简称
	BaseFooterModel
}

// 创建索引
func (city *City) TableIndex() [][]string {
	return [][]string{
		// 给 name 创建索引，并给 telephone 和 email 创建联合索引
		{"city_code"},
		{"province_code"},
		//{"telephone", "email"},
	}
}

/* 地区信息 table_name = area */ //区域信息是需要我们手动添加到数据库中的
type Area struct {
	BaseHeaderModel
	CityCode  int64  `orm:"int(10);DEFAULT(0);description(父级市代码)" json:"CityCode"` //父级市代码
	AreaName  string `orm:"varchar(40);description(市名称)" json:"AreaName"`          //市名称
	AreaCode  int64  `orm:"int(10);DEFAULT(0);description(区代码)" json:"AreaCode"`   //区代码
	ShortName string `orm:"varchar(40);description(简称)" json:"ShortName"`          //简称
	BaseFooterModel
}

// 创建索引
func (area *Area) TableIndex() [][]string {
	return [][]string{
		// 给 name 创建索引，并给 telephone 和 email 创建联合索引
		{"city_code"},
		{"area_code"},
		//{"telephone", "email"},
	}
}

/* 街道信息 table_name = 街道信息 */ //街道信息是需要我们手动添加到数据库中的
type Street struct {
	BaseHeaderModel
	AreaCode        int64  `orm:"int(10);DEFAULT(0);description(区代码)" json:"AreaCode"`    //区代码
	StreetName      string `orm:"varchar(40);description(街道名称)" json:"StreetName"`        //街道名称
	StreetCode      int64  `orm:"int(10);DEFAULT(0);description(街道代码)" json:"StreetCode"` //街道代码
	ShortName       string `orm:"varchar(40);description(简称)" json:"ShortName"`           //简称
	BaseFooterModel        //状态
}

// 创建索引
func (atreet *Street) TableIndex() [][]string {
	return [][]string{
		// 给 name 创建索引，并给 telephone 和 email 创建联合索引
		{"area_code"},
		{"street_code"},
		//{"telephone", "email"},
	}
}
